home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.OpenProm / boot.h < prev    next >
C/C++ Source or Header  |  1991-06-05  |  3KB  |  111 lines

  1. /*-
  2.  * boot.h --
  3.  *     Header file for sprite tftp boot program
  4.  *
  5.  * Copyright (c) 1987 by the Regents of the University of California
  6.  *
  7.  * Permission to use, copy, modify, and distribute this
  8.  * software and its documentation for any purpose and without
  9.  * fee is hereby granted, provided that the above copyright
  10.  * notice appear in all copies.  The University of California
  11.  * makes no representations about the suitability of this
  12.  * software for any purpose.  It is provided "as is" without
  13.  * express or implied warranty.
  14.  *
  15.  *    "$Header: /sprite/src/boot/netBoot.OpenProm/RCS/boot.h,v 1.3 91/01/13 02:35:53 dlong Exp $ SPRITE (Berkeley)"
  16.  */
  17. #ifndef _BOOT_H
  18. #define _BOOT_H
  19.  
  20. #include <sprite.h>
  21. #include <sys/types.h>
  22. #include <netEther.h>
  23. #ifndef OPENPROMS
  24. #define OPENPROMS
  25. #endif
  26. #include "sunromvec.h"
  27.  
  28. extern struct sunromvec    *romp;
  29. #define romVectorPtr    romp
  30.  
  31. #define printf              (*romp->v_printf)
  32. #define millitime()        (*romp->v_nmiclock)
  33.  
  34. #if defined(sun4)
  35.  
  36. #include <netInet.h>
  37.  
  38. typedef struct {
  39.     Net_EtherHdr    header;
  40.     unsigned short    hardwareType;
  41.     unsigned short    protocolType;
  42.     unsigned char    hardwareAddrLen;
  43.     unsigned char    protocolAddrLen;
  44.     unsigned short    opcode;
  45.     Net_EtherAddress    senderEtherAddr;
  46.     unsigned char    senderProtAddr[4];
  47.     Net_EtherAddress    targetEtherAddr;
  48.     unsigned char    targetProtAddr[4];
  49. } My_ArpPacket;
  50.  
  51. #define Net_ArpPacket My_ArpPacket
  52.  
  53. #define inet_cmp(x, y)        (bcmp((x), (y), 4) == 0)
  54. #define inet_copy(x, y)        bcopy((y), (x), 4)
  55.  
  56. #else
  57.  
  58. #define inet_cmp(x, y)        ((x) == (y))
  59. #define inet_copy(x, y)        ((x) = (y))
  60.  
  61. #endif
  62.  
  63. extern char *BootDevName();
  64. extern char *BootFileName();
  65. extern void PrintBootCommand();
  66.  
  67. #if defined(sun4c)
  68.  
  69. #define ExitToMon()        (*romp->v_exit_to_mon)();
  70. #define CheckRomMagic()        (ROMVEC_MAGIC == RomMagic)
  71. #define RomVersion        (romp->v_romvec_version)
  72. #define RomMagic        (romp->v_magic)
  73.  
  74. #define DevOpen(dev) \
  75.     (RomVersion >= 2 \
  76.     ? (*romp->op_open)(dev) \
  77.     : (*romp->v_open)(dev))
  78.  
  79. #define DevClose(fileId) \
  80.     (RomVersion >= 2 \
  81.     ? (*romp->op_close)(fileId) \
  82.     : (*romp->v_close)(fileId))
  83.  
  84. #define xmit_packet(fileId, buf, len) \
  85.     (RomVersion >= 2 \
  86.     ? (*romp->op_write)(fileId, buf, len) \
  87.     : (*romp->v_xmit_packet)(fileId, len, buf))
  88.  
  89. #define poll_packet(fileId, buf) \
  90.     (RomVersion >= 2 \
  91.     ? (*romp->op_read)(fileId, buf, NET_ETHER_MAX_BYTES) \
  92.     : (*romp->v_poll_packet)(fileId, NET_ETHER_MAX_BYTES, buf))
  93.  
  94. #define reset(fileId)    /* don't know how to reset */
  95.  
  96. #else  /* sun4c */
  97.  
  98. #include "saio.h"
  99. typedef struct saioreq SIP;
  100.  
  101. #define xmit_packet(fileId, buf, len) \
  102.     (*(SIP *)(fileId)->si_sif->sif_xmit)((SIP *)(fileId)->si_devdata, buf, len)
  103. #define poll_packet(fileId, buf)
  104.     (*(SIP *)(fileId)->si_sif->sif_poll)((SIP *)(fileId)->si_devdata, buf)
  105. #define reset(fileId)
  106.     (*(SIP *)(fileId)->si_sif->sif_reset)((SIP *)(fileId)->si_devdata)
  107.  
  108. #endif /* sun4c */
  109.  
  110. #endif /* _BOOT_H */
  111.